package cool.houge.hello.auth;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 用户访问权限注解.
 *
 * @author KK (kzou227@qq.com)
 */
@Documented
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Authorized {

  /**
   * 开启用户令牌认证。
   *
   * <p>如果值为{@code false}，其它属性验证器须全部忽略。
   *
   * @return true/false
   */
  boolean value() default true;

  /**
   * 用户访问认证还需要额外的许可。
   *
   * @return 许可列表
   */
  String[] permits() default {};
}
